package com.ruijiang.controller.user_service;


import com.ruijiang.controller.ApiPrefix;
import com.ruijiang.dto.insert.RegionInsertDto;
import com.ruijiang.dto.insert.UserInsertDto;
import com.ruijiang.dto.page.UserPageDto;
import com.ruijiang.entity.User;
import com.ruijiang.result.PageResult;
import com.ruijiang.service.UserService.UserService;
import com.ruijiang.vo.user.UserGetByIdVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping(ApiPrefix.USER_SERVICE+"/user")
@Slf4j
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/search")
    public PageResult getList(UserPageDto userPageDto){

        log.info("人员列表 : {}", userPageDto);

        PageResult pageResult = userService.getList(userPageDto);

        return pageResult;

    }

    /**
     * 新增人员
     * @param userInsertDto
     * @return
     */
    @PostMapping
    public Boolean insertUser(@RequestBody UserInsertDto userInsertDto){
        log.info("新增人员：{}",userInsertDto);
        userService.insertUser(userInsertDto);
        return true;
    }


    /**
     * 删除人员
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public Boolean deleteUser(@PathVariable Integer id){
        log.info("删除人员 ：id={}",id);
        userService.deleteUser(id);
        return true;
    }


    @PutMapping("/{id}")
    public Boolean updateUser(@PathVariable Integer id, @RequestBody UserInsertDto userInsertDto){
        log.info("修改人员 id={} 修改信息={}",id,userInsertDto);
        userService.updateUser(id,userInsertDto);
        return true;
    }

    @GetMapping("/{id}")
    public UserGetByIdVO getById(@PathVariable Integer id){

        log.info("查询人员 id：{}", id);
        UserGetByIdVO userGetByIdVO = userService.getById(id);
        return userGetByIdVO;

    }

    /**
     * 根据售货机获取运营人员列表
     * @return
     */
    @GetMapping("/operatorList/{innerCode}")
    public List<User> getOperatorList(@PathVariable String innerCode)
    {
        log.info("根据售货机获取运营人员列表 {}",innerCode);
        return userService.getOperatorList(innerCode);

    }


    @GetMapping("/searchUserWork")
    public PageResult getUserWorkPage(UserPageDto dto){
        log.info("人员工作量列表 {}",dto);
        return userService.getUserWorkPage(dto);

    }

    @GetMapping("/repairerList/{innerCode}")
    public List<User> getRepairerList(@PathVariable String innerCode){
        log.info("根据售货机获取维修人员列表");
        return userService.getRepairerList(innerCode);

    }



}
